#include<iostream>
#include<string.h>

using namespace std;
int main()
{
    // int a[] = {1,2,3,4};
    // printf("%d\n",sizeof(a));    //16, 整个数组大小          printf("%d\n",sizeof(a+0));  //4/8, 获取到首元素的地址大小, 分32位和64位的.
    // printf("%d\n",sizeof(*a));  // 4 , 首元素大小               printf("%d\n",sizeof(a+1));  //4/8.第二个元素的地址.
    // printf("%d\n",sizeof(a[1])); //4.第二个元素大小        printf("%d\n",sizeof(&a));   //4/8整个数组的地址的大小.
    // printf("%d\n",sizeof(*&a)); //16, 取整个数组的地址的大小就是整个数组   printf("%d\n",sizeof(&a+1)); //4/8跳过整个数组的地址.
    // printf("%d\n",sizeof(&a[0]));//4/8第一个数组的地址的大小                 printf("%d\n",sizeof(&a[0]+1));//4/8第二个元素的地址.
    
     char arr[] = {'a','b','c','d','e','f'}; 
    // printf("%d\n", sizeof(arr));    //6, 整个数组大小         printf("%d\n", sizeof(arr+0)); //4/8首元素的地址;
    // printf("%d\n", sizeof(*arr));   //1, 首元素大小            printf("%d\n", sizeof(arr[1])); //1, 第二个元素的大小
    // printf("%d\n", sizeof(&arr));  //4/8, 整个数组的地址      printf("%d\n", sizeof(&arr+1)); // 4/8, 跳过整个数组的地址
    // printf("%d\n", sizeof(&arr[0]+1)); //4/8第二个元素的地址.
    
       printf("%d\n", strlen(arr));   //随机值, 因为首元素地址不知道\0在哪里.
       printf("%d\n", strlen(arr + 0)); //随机值,和上面一样.
       printf("%d\n", strlen(*arr));   //err, 首元素, 不是指针无法找到.
       printf("%d\n", strlen(arr[1]));  //err, 上面一样.
       printf("%d\n", strlen(&arr));   //随机值, 整个数组的地址.不知道\0在哪里
       printf("%d\n", strlen(&arr + 1));    //随机值, 跳过整个数组的地址, 不知道\0在哪里.
       printf("%d\n", strlen(&arr[0] + 1)); //随机值,第二个元素的地址.不知道\0在哪里.
    return 0;
}